/**
 * Copyright ©2003~2019年1月28日 szkingdom
 * @author raohj
 * @date 2019年1月28日
 * @file RHashMap.java
 * @comment : please input your comment to this file
 * @version : input version
 * @modify:
 * 		1、 2019年1月28日 由 raohj 新建文件
 */
package com.ccnu.demojava.collection;

import java.util.*;

/**
 * @author raohj
 * @date 2019年1月28日
 * @version 
 * @comment to add your comment
 */
public class RMap {
	private static int MAX_ELEMENT = 10;
	private static String[] sContent = new String[MAX_ELEMENT];
	
	static {
		for (int i = 0; i < sContent.length; i++) {
			sContent[i] = new String("TEST" + i);
		}
	}
	/**
	 * @author raohj
	 * @date 2019年3月30日
	 * @comment 测试Map
	 * @param 
	 * @return 
	 */
	public static void Map() {
		// HashTable
		Hashtable<String, String> ht = new Hashtable<>();
		for (int i = 0; i < sContent.length; i++) {
			ht.put("key" + sContent[i], "value" + sContent[i]);
		}
		System.out.println("=======打印HashTable=======");
		printValue(ht.keySet().iterator());
		
		// HashMap
		HashMap<String, String> hm = new HashMap<>();
		for (int i = 0; i < sContent.length; i++) {
			hm.put("key" + sContent[i], "value" + sContent[i]);
		}
		System.out.println("=======打印HashMap=======");
		printValue(hm.keySet().iterator());
		
		// LinkedHashMap
		LinkedHashMap<String, String> lhm = new LinkedHashMap<>();
		for (int i = 0; i < sContent.length; i++) {
			lhm.put("key" + sContent[i], "value" + sContent[i]);
		}
		System.out.println("=======打印LinkedHashMap=======");
		printValue(lhm.keySet().iterator());
		
		// TreeMap 按照k升序排列
		TreeMap<String, String> tm = new TreeMap<>();
		for (int i = 0; i < sContent.length; i++) {
			tm.put("key" + sContent[i], "value" + sContent[i]);
		}
		System.out.println("=======打印TreeMap=======");
		printValue(lhm.keySet().iterator());
		
		// TreeMap
		TreeMap<String, String> treem = new TreeMap<>();
		for (int i = 0; i < sContent.length; i++) {
			treem.put("key" + sContent[i], "value" + sContent[i]);
		}
		System.out.println("=======打印TreeMap=======");
		printValue(treem.keySet().iterator());
		
		// WeakHashMap
		WeakHashMap<String, String> whm = new WeakHashMap<>();
		for (int i = 0; i < sContent.length; i++) {
			whm.put("key" + sContent[i], "value" + sContent[i]);
		}
		String swhm1 = new String("DoIt");
		whm.put(swhm1, swhm1);
		System.out.println("=======打印WeakHashMap=======");
		printValue(whm.keySet().iterator());
		
		System.out.println("=======再次打印WeakHashMap=======");
		swhm1 = null;
		printValue(whm.keySet().iterator());
		
		// IdentityHashMap
		IdentityHashMap<String, String> ihm = new IdentityHashMap<>();
		for (int i = 0; i < sContent.length; i++) {
			ihm.put("key" + sContent[i], "value" + sContent[i]);
		}
		System.out.println("=======打印IdentityHashMap=======");
		printValue(ihm.keySet().iterator());
	}
	
	/**
	 * @author raohj
	 * @date 2019年3月30日
	 * @comment 打印值
	 * @param 
	 * @return 
	 * @param iterator
	 */
	public static void printValue(Iterator<String> iterator) {
		for (; iterator.hasNext();) {
			String string = (String) iterator.next();
			System.out.println(string);
		}
	}
}
